package com.dji.sdk.self.internal.utils;

import android.graphics.Color;

import com.amap.api.location.AMapLocationClient;
import com.amap.api.location.AMapLocationClientOption;
import com.amap.api.maps.AMap;
import com.amap.api.maps.AMapOptions;
import com.amap.api.maps.CameraUpdate;
import com.amap.api.maps.CameraUpdateFactory;
import com.amap.api.maps.UiSettings;
import com.amap.api.maps.model.BitmapDescriptorFactory;
import com.amap.api.maps.model.CameraPosition;
import com.amap.api.maps.model.MyLocationStyle;
import com.dji.mapkit.core.maps.DJIMap;
import com.dji.sdk.self.R;

public class MapUtils {
    private DJIMap map;
    private AMap mAMap;
    public MapUtils (DJIMap djiMap){
        this.map = djiMap;
        this.mAMap = (AMap) map.getMap();
    }
    public void setUiSettings(UiSettings uiSettings){
        uiSettings.setRotateGesturesEnabled(false);
        uiSettings.setTiltGesturesEnabled(false);
        uiSettings.setZoomGesturesEnabled(true);
        uiSettings.setZoomControlsEnabled(false);
        uiSettings.setScrollGesturesEnabled(true);
        uiSettings.setCompassEnabled(false);
        // 显示默认的定位按钮
        uiSettings.setMyLocationButtonEnabled(true);
        // 控制比例尺控件是否显示
        uiSettings.setScaleControlsEnabled(true);
    }
    public void getLocationStyle(MyLocationStyle myLocationStyle){
        // 初始化定位蓝点样式类myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE);//连续定位、且将视角移动到地图中心点，定位点依照设备方向旋转，并且会跟随设备移动。（1秒1次定位）如果不设置myLocationType，默认也会执行此种模式。
        // 设置连续定位模式下的定位间隔，只在连续定位模式下生效，单次定位模式下不会生效。单位为毫秒。
//        myLocationStyle.interval(2000);
        // 设置定位蓝点的icon图标方法，需要用到BitmapDescriptor类对象作为参数。
//        myLocationStyle.myLocationIcon(BitmapDescriptorFactory.fromResource(R.drawable.aircraft));
        myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATE);
        // 设置圆形的边框颜色
        myLocationStyle.strokeColor(Color.argb(0, 0, 0, 0));
        // 设置精度范围的圆形边框宽度
        myLocationStyle.strokeWidth(0);
        // 设置圆形的填充颜色
        myLocationStyle.radiusFillColor(Color.argb(0, 125, 125, 0));
        // 设置定位蓝点的Style
        mAMap.setMyLocationStyle(myLocationStyle);
    }
    public void initCamera(){
        CameraUpdate cameraUpdate = CameraUpdateFactory.zoomTo(17.5f);
        mAMap.animateCamera(cameraUpdate, 1000, null);
        mAMap.setMaxZoomLevel(17.5f);
        CameraPosition cameraPosition = CameraPosition.builder().tilt(0).build();
        AMapOptions aMapOptions = new AMapOptions();
        aMapOptions.camera(cameraPosition);
    }
    public void initLocationOption(AMapLocationClient locationClient){
        //初始化AMapLocationClientOption对象
        AMapLocationClientOption locationOption = new AMapLocationClientOption();
        // 设置定位模式为AMapLocationMode.Hight_Accuracy，高精度模式。
        locationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
        // 设置定位间隔,单位毫秒,默认为2000ms，最低1000ms。
        locationOption.setInterval(1000);
        // 设置是否返回地址信息（默认返回地址信息）
        locationOption.setNeedAddress(true);
        // 给定位客户端对象设置定位参数
        locationClient.setLocationOption(locationOption);
    }
}
